﻿using System;
using System.Windows;
using SoftSource.Timecard.Views;
using SoftSource.Timecard.Web.Data;

namespace SoftSource.Timecard.Controller
{
    public sealed partial class ProjectManagerController : IController
    {
        #region IControllerBase Members

        public void DisplayError(Exception exception)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region IController Members

        public Func<UIElement> CreateMainView
        {
            get
            {
                return () =>
                    {
                        FrameworkElement view = new MainView();

                        view.DataContext = ProjectManagerController.CreateMainViewModel();

                        return view;
                    };
            }
        }

        public Func<UIElement> CreateReportView
        {
            get
            {
                return () =>
                    {
                        FrameworkElement view = new ReportListView();

                        view.DataContext = ProjectManagerController.CreateReportViewModel();

                        return view;
                    };
            }
        }

        public Func<UIElement> CreateSummaryView
        {
            get
            {
                return () =>
                {
                    FrameworkElement view = new SummaryView();

                    view.DataContext = ProjectManagerController.CreateSummaryViewModel();

                    return view;
                };
            }
        }

        public Func<UIElement> CreateEntryManagementView
        {
            get
            {
                return () =>
                    {
                        FrameworkElement view = new EntryManagementView();

                        view.DataContext = ProjectManagerController.CreateEntryManagementViewModel();

                        return view;
                    };
            }
        }

        public Func<UIElement> CreateUtilizationSummaryView
        {
            get
            {
                return () =>
                {
                    FrameworkElement view = new UtilizationSummaryView();

                    view.DataContext = ProjectManagerController.CreateUtilizationSummaryViewModel();

                    return view;
                };
            }
        }

        public Func<UIElement> CreateEntriesPriorToProjectBillingDateView
        {
            get
            {
                return () =>
                {
                    FrameworkElement view = new EntriesPriorToProjectBillingDateView();

                    view.DataContext = ProjectManagerController.CreateEntriesPriorToProjectBillingDateViewModel();

                    return view;
                };
            }
        }

        #endregion

        #region Empty

        public Func<UIElement> CreateUserView
        {
            get { return null; }
        }

        public Func<UIElement> CreateProjectView
        {
            get { return null; }
        }

        public Func<UIElement> CreateCategoryView
        {
            get { return null; }
        }

        public Func<UIElement> CreateCustomerView
        {
            get { return null; }
        }

        public Func<UIElement> CreateInvoicingView
        {
            get { return null; }
        }

        public Func<UIElement> CreateMilestoneView
        {
            get { return null; }
        }

        public Func<UIElement> CreateManagementView
        {
            get { return null; }
        }

        public Func<UIElement> CreateUpdateReminderView
        {
            get { return null; }
        }

        public Func<UIElement> CreateEntriesFlaggedForAdminView
        {
            get { return null; }
        }

        public Func<Action, UIElement> CreateNewUserEditor
        {
            get { return null; }
        }

        public Func<int, Action, UIElement> CreateUserEditor
        {
            get { return null; }
        }

        public Func<Action, UIElement> CreateNewProjectEditor
        {
            get { return null; }
        }

        public Func<int, Action, UIElement> CreateProjectEditor
        {
            get { return null; }
        }

        public Func<int, Action, UIElement> CreateCloneProjectEditor
        {
            get { return null; }
        }

        public Func<User, Action, UIElement> CreateUserProjectEditor
        {
            get { return null; }
        }

        public Func<bool, EntrySummary, UIElement> CreateEntrySummaryView
        {
            get { return null; }
        }

        public Func<Project, Action, UIElement> CreateProjectCategoryEditorView
        {
            get { return null; }
        }

        public Func<Project, Action, UIElement> CreateProjectMembershipEditorView
        {
            get { return null; }
        }

        public Func<ProjectMember, Action, UIElement> CreateProjectMemberEditorView
        {
            get { return null; }
        }

        public Func<Action<IObservable<string>>, UIElement> CreateGetUserPasswordView
        {
            get { return null; }
        }

        public Func<EntryLog, Action, UIElement> CreateEntryProjectCategoryAssociationEditorView
        {
            get { return null; }
        }

        #endregion
    }
}
